package com.oop.QuickHit;

public class Game {

	// Player player = new Player();

	// 需要一个玩家
	Player player;

	// 如果你要开启一局游戏，一定要给游戏对象一个玩家对象，才能创建这个游戏对象
	// 提供一个带玩家作为参数的构造方法
	public Game(Player player) {
		this.player = player;
	}

	public String printStr() {// 输出字符串，返回字符串用于和玩家输入比较
		String str = "";
		for (int i = 0; i < LevelParam.LEVEL[player.getLevelNo() - 1].getStrLength(); i++) {
			// 生成33-127之间的数字,强转成char
			char c = (char) (Math.random() * (127 - 33) + 33);
			str = str + c;
		}
		System.out.println(str);
		return str;
	}

	public void printResult(String out, String in) {// 比较游戏输出out和玩家输入in，根据比较结果输出相应信息
		if (out.equals(in)) {// 判断输入对错
			long currentTime = System.currentTimeMillis();
			if ((currentTime - player.getStartTime()) / 1000 // 如果超时
					> LevelParam.LEVEL[player.getLevelNo() - 1].getTimeLimit()) {
				System.out.println("你输入太慢了，已经超时，退出！");
				System.exit(1);
			}
			// 计算玩家当前积分
			player.setCurrScore(player.getCurrScore() + LevelParam.LEVEL[player.getLevelNo() - 1].getPerScore());
			// 计算已用时间
			player.setElapsedTime((int) ((currentTime - player.getStartTime()) / 1000));
			// 输出当前积分、当前级别、已用时间
			System.out.println("输入正确，您的级别" + player.getLevelNo() + " ,您的积分" + player.getCurrScore() + ",已用时间"
					+ player.getElapsedTime() + "秒。");
			// 判断用户是否已经闯过最后一关
			if (player.getLevelNo() == 6) {
				int score = LevelParam.LEVEL[player.getLevelNo() - 1].getPerScore()
						* LevelParam.LEVEL[player.getLevelNo() - 1].getStrTimes();// 计算闯关分数
				if (player.getCurrScore() == score) {
					System.out.println("你已闯关成功，成为绝世高手，恭喜你！！！");
					System.exit(0);
				}
			}
		} else {
			System.err.println("输入错误，游戏结束！");
			System.exit(1);
		}
	}

}
